/*
* This file is a part of the open-eBackup project.
* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
* If a copy of the MPL was not distributed with this file, You can obtain one at
* http://mozilla.org/MPL/2.0/.
*
* Copyright (c) [2024] Huawei Technologies Co.,Ltd.
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
*/
#ifndef OBJECT_CONFIG_MANAGER_H
#define OBJECT_CONFIG_MANAGER_H
#include <iostream>
#include <unordered_map>
#include <string>
#include <fstream>
#include <iostream>
#include "log/Log.h"

namespace OBSPlugin {
struct KeyInfo {
    int minValue;
    int maxValue;
    int defaultValue;
};

class ObjectConfigManager {
public:
    ObjectConfigManager() {
    }

    void InitBackupConfigurations();
    void InitBackupConfigurations2();
    void InitStringBackupConfigurations();
    std::string GetConfigStrFromFile(const std::string& fileName);
    std::string GetObjectStr(const std::string& key);
    int GetObjectInt(const std::string& key);
    std::string GetInnerConfigStr(const std::string& key);
    int GetInnerConfigInt(const std::string& key);

private:
    std::unordered_map<std::string, KeyInfo> m_tableIntKeyInfo;
    std::unordered_map<std::string, std::string> m_tableStringKeyInfo;
};
}
#endif